[小ネタ]CloudFormationのクイック作成リンクの作り方
こんにちは、コンサル部の鈴木(純)です。
今回はCloudFormationのクイック作成リンクを作る機会があったので、手順を載せておきます。
クイック作成リンクとは
ブラウザにURLを入力するだけで、CloudFormationのスタック作成ページに飛ぶことができるリンクです。公式ドキュメントはこちら。
このリンクの便利な点は、リンクを開くだけで必要なパラメータを全て入力済の状態にすることができるので、使う側の人は単純に「スタックの作成」ボタンを押すだけでスタックを作成することができます。
URLを開くとこんな感じにスタックのクイック作成ページに遷移して、スタック名やパラメータが入力済の状態になっているので、とても簡単なのが分かるかと思います。
クイック作成リンクを作ってみる
今回はサンプル用にVPCとサブネットを作成するテンプレートを用意しました。
AWSTemplateFormatVersion: 2010-09-09 # ------------------------------------------------------------# # Input Parameters # ------------------------------------------------------------# Parameters: SystemName: Type: String Env: Type: String AllowedValues: - prd - stg - dev VpcCidr: Type: String PrivateSubnetCidr: Type: String Resources: # ------------------------------------------------------------# # VPC # ------------------------------------------------------------# Vpc: Type: AWS::EC2::VPC Properties: CidrBlock: !Ref VpcCidr EnableDnsSupport: true EnableDnsHostnames: true Tags: - Key: Name Value: !Sub ${SystemName}-${Env}-vpc # ------------------------------------------------------------# # Subnets # ------------------------------------------------------------# ## Private Subnets PrivateSubnet: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Select - 0 - Fn::GetAZs: !Ref 'AWS::Region' VpcId: !Ref Vpc CidrBlock: !Ref PrivateSubnetCidr Tags: - Key: Name Value: !Sub ${SystemName}-${Env}-private-subnet
このテンプレートをクイック作成リンクを使って展開していきます。
[前準備]S3にCloudFormationテンプレートを格納する
テンプレートを展開するためのS3バケットを作成していきます。今回はバケット名パブリックアクセスを有効化するためにパブリックアクセスをすべてブロック
のチェックを外しておきましょう。
S3バケットを作成したら、展開したいテンプレートを格納します。
今回はsample.yml
のファイル名で格納しています。
オブジェクトの詳細からオブジェクトURL
を取得できるので、こちらを控えておきましょう。
展開用URLを作成する
完成形はこちらです。このままだとよくわからないと思うので、1つずつ分解していきます
https://ap-northeast-1.console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks/create/review?templateURL=https://cf-quick-create.s3-ap-northeast-1.amazonaws.com/sample.yml&stackName=SampleStack¶m_SystemName=sample¶m_Env=dev¶m_VpcCidr=172.27.0.0/22¶m_PrivateSubnetCidr=172.27.0.0/24
今回のURLを要素ごとに分解すると以下のような形になります。
1.https://ap-northeast-1.console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks/create/review?templateURL= # 実行するリージョン 2.https://cf-quick-create.s3-ap-northeast-1.amazonaws.com/sample.yml # オブジェクトURL 3.&stackName=SampleStack # スタック名 4.¶m_SystemName # インプットパラメータ [SystemName] ¶m_Env=dev # インプットパラメータ [Env] ¶m_VpcCidr=172.27.0.0/22 # インプットパラメータ [VpcCidr] ¶m_PrivateSubnetCidr=172.27.0.0/24 # インプットパラメータ [PrivateSubnetCidr]
1.実行するリージョン
どのリージョンでスタックを作成するかは以下の部分です。ここは東京リージョンを使うのであればこのまま変更せずにこのままで問題ありません。もし東京リージョン以外で作成したい場合はap-northeast-1
を変更したいリージョンに置換してください。
https://ap-northeast-1.console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks/create/review?templateURL=
2.オブジェクトURL
展開したいテンプレートのURLを貼り付けます。
今回は前準備で用意したオブジェクトURLをそのまま使いましょう。
https://cf-quick-create.s3-ap-northeast-1.amazonaws.com/sample.yml
3.スタック名
展開するスタックのスタック名を入力します。stackName=
の後に任意のスタック名を入力してください。今回はSampleStackとしています。
&stackName=SampleStack
4.インプットパラメータ
最後にテンプレートで使用するインプットとなるパラメータを追加していきます。使用するテンプレートによってインプットのパラメータは変わると思うので、適宜変更してください。今回は4つのインプットパラメータをテンプレートで定義していたので、それぞれ値を与えています。
Parameters: SystemName: Type: String Env: Type: String AllowedValues: - prd - stg - dev VpcCidr: Type: String PrivateSubnetCidr: Type: String
上記のインプットパラメータを今回は以下のように書いてます。
¶m_SystemName=sample ¶m_Env=dev ¶m_VpcCidr=172.27.0.0/22 ¶m_PrivateSubnetCidr=172.27.0.0/24
書き方としては以下のように要素ごとに&でつなげて、パラメータはparam_
の後にテンプレートで定義したパラメータ論理名を入れてあげます。
¶m_{パラメータの論理名}=値¶m_{パラメータの論理名}=値…
以上の1~4の要素を全てくっつけてあげればURLの作成完了です。
あとは作成したURLを送ってあげれば誰でもログインしているAWSアカウントにスタックを展開することができます。
展開してみる
展開するには、先ほど作成したURLを展開したいアカウントにログインした状態でブラウザへ貼り付けるだけです。
スタックの作成を実行して、スタックが無事作成されるのを確認します。
作成されたVPCの値を確認してみると、URLで渡したCidrなどの情報で無事作成できていることが確認できました。
まとめ
CloudFormationのクイック作成リンクを活用することで、作業ミスを防ぐことができる場面をあるかと思います。他の人に作業を依頼する際など、是非クイック作成リンクを利用してみてください。